home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / mozilla-firefox / include / gfx / nsPoint.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  5KB  |  140 lines

  1. /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  2. /* ***** BEGIN LICENSE BLOCK *****
  3.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  4.  *
  5.  * The contents of this file are subject to the Mozilla Public License Version
  6.  * 1.1 (the "License"); you may not use this file except in compliance with
  7.  * the License. You may obtain a copy of the License at
  8.  * http://www.mozilla.org/MPL/
  9.  *
  10.  * Software distributed under the License is distributed on an "AS IS" basis,
  11.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12.  * for the specific language governing rights and limitations under the
  13.  * License.
  14.  *
  15.  * The Original Code is mozilla.org code.
  16.  *
  17.  * The Initial Developer of the Original Code is
  18.  * Netscape Communications Corporation.
  19.  * Portions created by the Initial Developer are Copyright (C) 1998
  20.  * the Initial Developer. All Rights Reserved.
  21.  *
  22.  * Contributor(s):
  23.  *
  24.  * Alternatively, the contents of this file may be used under the terms of
  25.  * either of the GNU General Public License Version 2 or later (the "GPL"),
  26.  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27.  * in which case the provisions of the GPL or the LGPL are applicable instead
  28.  * of those above. If you wish to allow use of your version of this file only
  29.  * under the terms of either the GPL or the LGPL, and not to allow others to
  30.  * use your version of this file under the terms of the MPL, indicate your
  31.  * decision by deleting the provisions above and replace them with the notice
  32.  * and other provisions required by the GPL or the LGPL. If you do not delete
  33.  * the provisions above, a recipient may use your version of this file under
  34.  * the terms of any one of the MPL, the GPL or the LGPL.
  35.  *
  36.  * ***** END LICENSE BLOCK ***** */
  37.  
  38. #ifndef NSPOINT_H
  39. #define NSPOINT_H
  40.  
  41. #include "nsCoord.h"
  42.  
  43. struct nsPoint {
  44.   nscoord x, y;
  45.  
  46.   // Constructors
  47.   nsPoint() {}
  48.   nsPoint(const nsPoint& aPoint) { x = aPoint.x; y = aPoint.y;}
  49.   nsPoint(nscoord aX, nscoord aY) { VERIFY_COORD(aX); VERIFY_COORD(aY); x = aX; y = aY;}
  50.  
  51.   void MoveTo(nscoord aX, nscoord aY) {x = aX; y = aY;}
  52.   void MoveBy(nscoord aDx, nscoord aDy) {x += aDx; y += aDy;}
  53.  
  54.   // Overloaded operators. Note that '=' isn't defined so we'll get the
  55.   // compiler generated default assignment operator
  56.   PRBool   operator==(const nsPoint& aPoint) const {
  57.     return (PRBool) ((x == aPoint.x) && (y == aPoint.y));
  58.   }
  59.   PRBool   operator!=(const nsPoint& aPoint) const {
  60.     return (PRBool) ((x != aPoint.x) || (y != aPoint.y));
  61.   }
  62.   nsPoint operator+(const nsPoint& aPoint) const {
  63.     return nsPoint(x + aPoint.x, y + aPoint.y);
  64.   }
  65.   nsPoint operator-(const nsPoint& aPoint) const {
  66.     return nsPoint(x - aPoint.x, y - aPoint.y);
  67.   }
  68.   nsPoint& operator+=(const nsPoint& aPoint) {
  69.     x += aPoint.x;
  70.     y += aPoint.y;
  71.     return *this;
  72.   }
  73.   nsPoint& operator-=(const nsPoint& aPoint) {
  74.     x -= aPoint.x;
  75.     y -= aPoint.y;
  76.     return *this;
  77.   }
  78.  
  79.   nsPoint operator-() const {
  80.     return nsPoint(-x, -y);
  81.   }
  82. };
  83.  
  84. #ifdef NS_COORD_IS_FLOAT
  85. struct nsIntPoint {
  86.   PRInt32 x, y;
  87.  
  88.   // Constructors
  89.   nsIntPoint() {}
  90.   nsIntPoint(const nsIntPoint& aPoint) { x = aPoint.x; y = aPoint.y;}
  91.   nsIntPoint(PRInt32 aX, PRInt32 aY) { x = aX; y = aY;}
  92.  
  93.   void MoveTo(PRInt32 aX, PRInt32 aY) {x = aX; y = aY;}
  94. };
  95.  
  96. typedef nsPoint nsFloatPoint;
  97. #else
  98. typedef nsPoint nsIntPoint;
  99.  
  100. struct nsFloatPoint {
  101.   float x, y;
  102.  
  103.   // Constructors
  104.   nsFloatPoint() {}
  105.   nsFloatPoint(const nsFloatPoint& aPoint) {x = aPoint.x; y = aPoint.y;}
  106.   nsFloatPoint(float aX, float aY) {x = aX; y = aY;}
  107.  
  108.   void MoveTo(float aX, float aY) {x = aX; y = aY;}
  109.   void MoveTo(nscoord aX, nscoord aY) {x = (float)aX; y = (float)aY;}
  110.   void MoveBy(float aDx, float aDy) {x += aDx; y += aDy;}
  111.  
  112.   // Overloaded operators. Note that '=' isn't defined so we'll get the
  113.   // compiler generated default assignment operator
  114.   PRBool   operator==(const nsFloatPoint& aPoint) const {
  115.     return (PRBool) ((x == aPoint.x) && (y == aPoint.y));
  116.   }
  117.   PRBool   operator!=(const nsFloatPoint& aPoint) const {
  118.     return (PRBool) ((x != aPoint.x) || (y != aPoint.y));
  119.   }
  120.   nsFloatPoint operator+(const nsFloatPoint& aPoint) const {
  121.     return nsFloatPoint(x + aPoint.x, y + aPoint.y);
  122.   }
  123.   nsFloatPoint operator-(const nsFloatPoint& aPoint) const {
  124.     return nsFloatPoint(x - aPoint.x, y - aPoint.y);
  125.   }
  126.   nsFloatPoint& operator+=(const nsFloatPoint& aPoint) {
  127.     x += aPoint.x;
  128.     y += aPoint.y;
  129.     return *this;
  130.   }
  131.   nsFloatPoint& operator-=(const nsFloatPoint& aPoint) {
  132.     x -= aPoint.x;
  133.     y -= aPoint.y;
  134.     return *this;
  135.   }
  136. };
  137. #endif // !NS_COORD_IS_FLOAT
  138.  
  139. #endif /* NSPOINT_H */
  140.